package com.order.itemcategoryproject.mapper;

import com.order.itemcategoryproject.pojo.DBlOrderHdOnline;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.sql.Date;
import java.util.List;

@Mapper
public interface DBlOrderHdOnlineMapper {

    /**
     * 添加订单信息
     *
     * @param DBlOrderHdOnline
     * @return
     */
    int insertOrderInfo(DBlOrderHdOnline DBlOrderHdOnline);


    /**
     * 根据制单人编号获取该制单人下的订单
     *
     * @param staffId
     * @return
     */
    List<DBlOrderHdOnline> getOrderInfoByStaffId(String staffId);


    /**
     * 通过订单编号获取订单信息
     *
     * @param orderId
     * @return
     */
    DBlOrderHdOnline getOrderInfoByOrderId(String orderId);


    /**
     * 通过订单编号更新订单状态为已完成
     *
     * @param orderId
     * @return
     */
    int updateOrderStatusByOrderId(String orderId);


    /**
     * 通过订单编号删除订单信息
     *
     * @param orderId
     * @return
     */
    int deleteOrderInfoByOrderId(String orderId);


    /**
     * 根据订单编号逻辑删除订单信息
     * @param orderId
     * @return
     */
    int updateOrderByOrderId(String orderId);

    /**
     * 通过订单编号更新订单内容
     *
     * @param orderId
     * @return
     */
    int updateRemarkContentByOrderId(@Param("orderId") String orderId, @Param("content") String content);


    /**
     * 根据订单号合计数量和价格
     *
     * @param orderId
     * @return
     */
    DBlOrderHdOnline sumOrderNumAndOrderPrice(String orderId);


    // 根据订单编号更新当前订单的值
    int updateOrderInfoByOrderId(@Param("orderId") String orderId, @Param("totalNum") int totalNum, @Param("totalPrice") double totalPrice,
                                 @Param("totalVolume") double totalVolume, @Param("totalWeight") double totalWeight);

    // 根据客户编号获取当前客户下最新创建的订单
    DBlOrderHdOnline selectNewOrderInfoDesc(String createStaffId);

    // 根据客户名称与订单编号更新当前订单预计付款时间
    int updateEsPaymentTimeByOrderIdAndCreateStaffId(@Param("orderId") String orderId, @Param("createStaffId") String createStaffId, @Param("esPaymentDate") Date esPaymentDate);


    // 根据订单编号更新该订单总数量和总价格
    int updateOrderTotalNumAndTotalPrice(String orderId);
}
